package study.springboot.mvc.support;

import com.google.common.base.Strings;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;

import java.util.List;
import java.util.Objects;
import java.util.function.Predicate;

@Slf4j
public class Assert {

    public static <T> void checkNotNull(T value, String name) {
        if (Objects.isNull(value)) {
            log.info("值空");
        }
        //
        else if (value instanceof String && Strings.isNullOrEmpty((String) value)) {
            log.info("值空");
        }
        //
        else if (value instanceof List && CollectionUtils.isEmpty((List) value)) {
            log.info("值空");
        }
    }

    public static <T> void checkLegal(T value, String name, Predicate<T> predicate) {
        if (predicate.test(value)) {
            log.info("值非法");
        }
    }

    public static <T> void checkNotNullAndLegal(T value, String name, Predicate<? super T> predicate) {
        checkNotNull(value, name);
        checkLegal(value, name, predicate);
    }
//
//    public static void main(String[] args) {
//        checkNotNullAndLegal("", "213", e -> "".equals(e));
//    }
}
